package myStack;
//原理：先进后出
import java.util.Arrays;

public class MyStack {
    // 数组
    public int[] elem;
    // 栈顶
    public int top;
    // 构造方法（初始化顺序栈）
    public MyStack() {
        elem = new int[5];
    }

    //1.压栈：E push(E e)
    //检测容量
    private boolean isFull() {
        return top == elem.length;
    }

    public int push(int e) {
        if (isFull()) {
            // 如果栈满就扩容
            elem = Arrays.copyOf(elem,2*elem.length);
        }
        elem[top++]=e;
        return e;
    }

    //2.出栈：E pop()
    public int pop() {
        // 如果栈空，抛异常（这里可以自定义实现一个异常类）
        if (empty()) {
            throw new EmptyException("空栈!");
        }
        // 正常出栈
        return elem[--top];
    }

    //3.获取栈顶元素：E peek()
    public int peek() {
        return elem[top-1];
    }

    //4.获取栈中有效元素个数：int size()
    public int size() {
        return top;
    }

    //5.检测栈是否为空：boolean empty()
    public boolean empty() {
        return top == 0;
    }

}
